Most data networks implement routing protocols derived from standard bodies such as IEEE, IETF and ITU. Although these protocols are effective, they are complex and define many discrete steps for processing an Ethernet frame/IP packet by a router. Once received, classification, action resolution, header modification, etc. occurs several times to a single Ethernet frame before it finally leaves the router and is transmitted to the next network element. Such protocols are resource intensive and can influence network performance, such as latency. These protocols are implemented either in software or in high logic block count FPGAs or resource intensive ASICs. It would be ideal to determine a method of implementing routing protocols that overcomes some of the problems found in the prior art.
In the following description, the term Ethernet switch also refers to a router, bridge and any other Ethernet device with more than one port that has the capability to receive an Ethernet packet on one port and transmitting it on another port.
Shown in FIG. 1 is a simplified diagram of a data network 120 comprising two Ethernet switches 100 and 102, in communication one with the other via data network 120. Ethernet switches 100 and 102 comprise in this example n communication interfaces, also known as ports, 101.1, 101.2, . . . 101.n and 103.1, 103.2, . . . 103.n respectively. In this particular example, network 120 is configured such that port 101.2 of Ethernet switch 100 is coupled to port 103.1 of Ethernet switch 102. Operations, administration and maintenance (OAM) features supported by network equipment is used as a means for fault detection and equipment testing. In this example, a test set 104 is coupled to port 101.1 and transmits Ethernet frames comprising OAM messages for turning on OAM features supported by the Ethernet switches 100, 102. For simplification, Ethernet frames comprising OAM messages are referred to herein generically as OAM frames.
The data path 105 shows the path of OAM frames transmitted by test set 104 for performing a terminal loopback on Ethernet switch 102 port #2 103.2. The path 105 of an OAM frame is as follows: received by port 101.1, then to port 101.2 for transmission into the network 120 to be received by port 103.1 and sent to port 103.2 for processing as a loopback OAM which then turns around the OAM frame back to port 103.1. The OAM frame is transmitted via the network 120 to Ethernet switch 100 and received by 101.2, routed to 101.1 to be transmitted back to the test set 104.
Referring to FIG. 2, shown is a simplified block diagram of Ethernet switch 102 and the path 105 of the OAM frame. Each port 103.1, 103.2 . . . 103.n has a transmitter (Tx) 116.1, 116.2, . . . 116.n, 116.1, 116.2, . . . 116.n and receiver (Rx) 114.1, 114.2, . . . 114-n pair for transmitting data to, and receiving data from the network 120. The ports may comprise optical transmitters and receivers. Alternatively, the ports may comprise electrical transmitters and receivers. Each port also comprises a MAC layer function 201.1, 201.2 . . . 201.n, and input function 203.1, 203.2 . . . 203.n and an output function 213.1, 213.2 . . . 213.n. 
The OAM frame is processed by each functional block along the path 105. In this example, the OAM frame is received by a receiver 114.1 of port 103.1 and sent for processing at the Medium Access Control (MAC) layer 201.1 which implements standard MAC receive (RX) and transmit processing (TX).
The MAC layer 201.1 transmits the OAM frame to an input function 203.1. The input function 203.1 processes the frame and sends it to the destination port output function 213.2. The output function 213.2 identifies the frame as an OAM frame and transmits it to the OAM engine 205 via a switching fabric 204. If the OAM frame is a terminal loopback request for port 2 103.2, the OAM engine 205 transmits the OAM frame to port #2 input function 203.2 via the switching fabric 204. The input function 203.2 performs the required processing for an OAM loopback frame. The OAM frame is then switched by the switching fabric 204 to the output function of port #1 213.1, and sends back to output function 213.1 of port #1 103.1 via the input function 203.2 then the switching fabric 204 and the OAM engine. The OAM frame is then transmitted back onto path 105 to test set 104 (not shown).
In this example, a terminal OAM loopback requires that the OAM frame is transmitted to OAM engine 205 twice and through the switching fabric 204 four times, consuming the limited bandwidth and impacting capacity or requiring costly overdesign.
Referring to FIG. 3, shown is a simplified block diagram of a prior art input function 203.1, 203.2 . . . 203.n processing of an OAM frame. The OAM frame is received from the MAC 201.1 and stored in in temporary frame buffer 304. Block 300 extracts the OAM frame header to build a classification key by filling key structure fields such as MAC source and destination addresses, ITU-T Y.1731, TPID, VID, Ethertype, IP source and destination addresses, etc. Block 302 classifies the OAM frame and resolves the action that should be performed, for example, based on user configuration of the switch or a classification map. Block 303 modifies the originally received frame stored in temporary frame buffer 304 based on the classification and action resolution of 302. In this example, the frame is an OAM frame and the OAM frame is modified such that when it is received by the switch fabric 204 it is routed to OAM engine 205. As block 203.1 is on an ingress port, the processing of the OAM frame within 203.1 is done in the context of an ingress port.
Referring to FIG. 4, shown is a simplified block diagram of the prior art output function 213.1, 213.2 . . . 213.n processing the OAM frame transmitted from the OAM engine 205, through switching fabric 204. The OAM frame is received from the switching fabric 204 and stored in in temporary frame buffer 308. Block 305 extracts the OAM frame header to build a classification key by filling key structure fields such as MAC source and destination addresses, ITU-T Y.1731, TPID, VID, Ethertype, IP source and destination addresses, etc. Block 306 classifies the OAM frame and resolves the action that should be performed based on the user configuration of the switch. Block 307 modifies the originally received frame stored in temporary frame buffer 308 based on the classification and action resolution of block 306.